设有如下程序: {int **k, *j, i=100;j=&i; k=&j;printf("%d\n", **k);}

来源:百度知道 编辑:UC知道 时间:2024/06/16 03:01:11
(41) 设有如下程序:
#include<stdio.h>
main()
{ int **k, *j, i=100;
j=&i; k=&j;
printf("%d\n", **k);
}
上面程序的输出结果是
A) 运行错误 B) 100 C) i的地址 D) j的地址

请给出解释谢谢

B

int **k, *j, i=100;
j=&i; //一维指针j指向i的地址,所以j中存放的是i的地址,*j就是i的内容,即*j=100
k=&j; //二维指针k指向j的地址,所以k中存放的是指向i的地址的地址,*j就是i的内容,**k就是i的内容,即**k=100

printf("%d\n", **k);//输出100

B

析:
若p = &n,则*p = n;

已知
k = &j; -> *k = j
j = &i; -> *j = i
i = 100;

**k = *(*k) = *j = i = 100

jhhjjh